﻿using System;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;

namespace BemEstarEmprego.Web.Helpers.EasyMvc
{
	public static class EasyExtensions
	{
		public static EasyHtmlHelper<T> Easy<T>(this HtmlHelper<T> html) { return null; }
	}

	public static class AwesomeExtensions
	{
		public static AwesomeHtmlHelper<T> Awe<T>(this HtmlHelper<T> html) { return null; }
	}

	public class EasyHtmlHelper<T>
	{
		public EasyHtmlHelper(HtmlHelper<T> html) { }
	}

	public class AwesomeHtmlHelper<T>
	{
		public AwesomeHtmlHelper(HtmlHelper<T> html) { }
	}

	public static class EasyHtmlHelperExtensions
	{
		public static ModalCrud<T> ModalCrud<T, TReturn>(this EasyHtmlHelper<T> a, Expression<Func<T, TReturn>> expresion) { return null; }
	}

	public static class AwesomeHtmlHelperExtensions
	{
		public static Lookup<T> LookupFor<T, TReturn>(this AwesomeHtmlHelper<T> a, Expression<Func<T, TReturn>> expression) { return null; }
	}

	public class ModalCrud<T> : EasyHelper<T, ModalCrud<T>> { }

	public class Lookup<T> : AwesomeHelper<T, Lookup<T>> { }

	public abstract class EasyHelper<T, TH> : EasyHelperBase where TH : EasyHelper<T, TH>
	{ }

	public abstract class AwesomeHelper<T, TH> : AwesomeHelperBase where TH : AwesomeHelper<T, TH>
	{ }

	public abstract class EasyHelperBase : IHtmlString
	{
		public string ToHtmlString()
		{
			throw new NotImplementedException();
		}
	}

	public abstract class AwesomeHelperBase : IHtmlString
	{
		public string ToHtmlString()
		{
			throw new NotImplementedException();
		}
	}
}